home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Updates / HD-Installer / jst_dev / sources / jst / gp_macros.i next >
Text File  |  2000-04-12  |  17KB  |  622 lines

  1.     IFND    GP_MACROS_I_INCLUDED
  2. GP_MACROS_I_INCLUDED    =    1
  3.  
  4.     include    "osemu.i"
  5.  
  6.     MC68000
  7.  
  8. ; ** currently used disk sizes
  9.  
  10. STD_DISK_SIZE = 901120    ; standard dos copiable disks
  11. B12_DISK_SIZE = 970752    ; 12 sectored 79 tracks disks, dos bootblock
  12. S12_DISK_SIZE = 983040    ; 12 sectored 79 tracks disks, dos bootblock
  13.  
  14. ; ** Tooltype/argument definitions
  15.  
  16. ; bits
  17.  
  18. AFB_NTSC = 0
  19. AFB_LOWMEM = 1
  20. AFB_HDLOAD = 2
  21. AFB_TRAINER = 3
  22. AFB_NOOSSWAP = 4
  23. AFB_JOYPAD = 5
  24.  
  25. ; ** joypad button definitions (for JoyButtonsState)
  26.  
  27. ; ** masks
  28.  
  29. AFF_FIRE1 = $20        ; red joypad button
  30. AFF_START = $01        ; start/pause joypad button
  31. AFF_FIRE2 = $40        ; blue joypad button
  32. AFF_FIRE4 = $08        ; green joypad button
  33. AFF_FIRE3 = $10        ; yellow joypad button
  34. AFF_FORWD = $04        ; forward joypad key
  35. AFF_BACWD = $02        ; back joypad key
  36.  
  37. ; ** bits
  38.  
  39. AFB_START = $0        ; start/pause joypad button
  40. AFB_BACWD = $1        ; back joypad key
  41. AFB_FORWD = $2        ; forward joypad key
  42. AFB_FIRE4 = $3        ; green joypad button
  43. AFB_FIRE3 = $4        ; yellow joypad button
  44. AFB_FIRE1 = $5        ; red joypad button
  45. AFB_FIRE2 = $6        ; blue joypad button
  46.  
  47.  
  48. STORE_REGS: MACRO
  49.     IFLE    NARG
  50.     movem.l    D0-D7/A0-A6,-(A7)
  51.     ELSE
  52.     movem.l    \1,-(A7)
  53.     ENDC
  54.     ENDM
  55.  
  56. RESTORE_REGS: MACRO
  57.     IFLE    NARG
  58.     movem.l    (A7)+,D0-D7/A0-A6
  59.     ELSE
  60.     movem.l    (A7)+,\1
  61.     ENDC
  62.     ENDM
  63.  
  64. WAIT_LMB: MACRO
  65. .wl\@
  66.     btst    #6,$BFE001
  67.     bne    .wl\@
  68.     ENDM
  69.  
  70. WAIT_JOY: MACRO
  71. .wj\@
  72.     btst    #7,$BFE001
  73.     bne    .wj\@
  74.     ENDM
  75.  
  76. GETLVO:MACRO
  77.     move.l    #_LVO\1,D0
  78.     ENDM
  79.  
  80. ; ******* Print/Printf ********
  81. ; Because of buggy Barfly macro argument count,
  82. ; I had to make 2 functions for BARFLY for each Mac_printf and Mac_printh
  83. ;
  84. ; Mac_printf : same as before
  85. ; Mac_print  : no linefeed (same as Mac_printf "string",*anything* , except
  86. ; Barfly does not work properly with it, and as I now use Barfly for JST
  87. ; it's annoying)
  88. ;
  89. ; Mac_printh : same as before
  90. ; Mac_printx : Mac_printh without linefeed
  91.  
  92.     IFD    BARFLY
  93.  
  94. Mac_print: MACRO
  95.  
  96.     move.l    A1,-(A7)
  97.     lea    .text\@(PC),A1
  98.     JSRABS    Display
  99.  
  100.     bra    .ftext\@
  101. .text\@
  102.     dc.b    "\1",0
  103.     even
  104.  
  105. .ftext\@
  106.     move.l    (A7)+,A1
  107.     ENDM
  108.  
  109. Mac_printf: MACRO
  110.     Mac_print    <\1>
  111.     NEWLINE
  112.     ENDM
  113.  
  114. Mac_printh: MACRO
  115.     Mac_printx    \1
  116.     NEWLINE
  117.     ENDM
  118.  
  119. Mac_printx:MACRO
  120.     movem.l    D0/A1,-(A7)
  121.     move.l    \1,D0
  122.     lea    .text\@(PC),A1
  123.     JSRABS    HexToString
  124.     JSRABS    Display
  125.     bra    .ftext\@
  126.  
  127. .text\@
  128.     dc.b    "$00000000",0
  129.     even
  130. .ftext\@
  131.     movem.l    (A7)+,D0/A1
  132.     ENDM
  133.  
  134.     ELSE
  135.  
  136. ; *** macro definitions for other assemblers than Barfly
  137.  
  138. ; ******* Macro Printf ********
  139. ; Mac_printf "text"   -> text + linefeed
  140. ; Mac_printf "text",*any argument* -> text without linefeed
  141.  
  142. Mac_printf: MACRO
  143.  
  144.     move.l    A1,-(A7)
  145.     lea    .text\@(PC),A1
  146.     JSRABS    Display
  147.     bra    .ftext\@
  148. .text\@
  149.     IFD    MAXON_ASM
  150.         dc.b    "\1"
  151.     ELSE
  152.         IFD    BARFLY
  153. ;;            dc.b    "\1"
  154.         ELSE
  155.             DC.B    \1
  156.         ENDIF
  157.     ENDIF
  158.     
  159.     IFLE    NARG-1
  160.     dc.b    10,13
  161.     ENDC
  162.     dc.b    0
  163.     even
  164.  
  165. .ftext\@
  166.     move.l    (A7)+,A1
  167.     ENDM
  168.  
  169. Mac_print:MACRO
  170.     Mac_printf    \1,v
  171.     ENDM
  172.  
  173. ; ******* Macro Printh ********
  174. ; Mac_printh <expr>   -> hex number + linefeed
  175. ; Mac_printh <expr>,*any argument* -> without linefeed
  176.  
  177. Mac_printh: MACRO
  178.  
  179.     movem.l    D0/A1,-(A7)
  180.     move.l    \1,D0
  181.     lea    .text\@(PC),A1
  182.     JSRABS    HexToString
  183.     JSRABS    Display
  184.     bra    .ftext\@
  185.  
  186. .text\@
  187.     dc.b    "$00000000"
  188.     IFLE    NARG-1
  189.     dc.b    10,13
  190.     ENDC
  191.     dc.b    0
  192.     even
  193. .ftext\@
  194.     movem.l    (A7)+,D0/A1
  195.     ENDM
  196.  
  197.     ENDC
  198.  
  199. PUTS: MACRO
  200.     move.l    A1,-(A7)
  201.     lea    \1,A1
  202.     JSRABS    Display
  203.     move.l    (A7)+,A1
  204.     ENDM
  205.  
  206. NEWLINE: MACRO
  207.     JSRABS    NewLine
  208.     ENDM
  209.  
  210.  
  211.  
  212. STOP_SOUND:MACRO
  213.     move.w    #$000F,dmacon+$DFF000
  214.     move.w    #$0000,aud0+ac_len+$DFF000
  215.     move.w    #$0000,aud1+ac_len+$DFF000
  216.     move.w    #$0000,aud2+ac_len+$DFF000
  217.     move.w    #$0000,aud3+ac_len+$DFF000
  218.     ENDM
  219.  
  220. MAKE_ABS_REFS:MACRO
  221.  
  222.     ; *** Non-relocated routines. call normally with JSR
  223.     ; *** don't call them with JSRGEN, this would not compile (better than crash)
  224.  
  225.     DEF_\1_ABS    CloseAll,0        ; quit program (while the OS is up)
  226.     DEF_\1_ABS    CloseAllQuiet,1        ; quit program and close window
  227.     DEF_\1_ABS    LoadDisks,2        ; load diskfiles
  228.     DEF_\1_ABS    LoadDiskFromName,3    ; load a disk
  229.     DEF_\1_ABS    LoadDisksIndex,4    ; load a disk, starting from number D0
  230.     DEF_\1_ABS    LoadFiles,5        ; load files in the directory
  231.     DEF_\1_ABS    LoadSmallFiles,6    ; load small files (<D0)
  232.     DEF_\1_ABS    Kick37Test,7        ; check if Kickstart version <37
  233.     DEF_\1_ABS    KickVerTest,8        ; check against a given kick version
  234.     DEF_\1_ABS    GetMemFlag,9        ; returns MEMF_REVERSE flag isf available
  235.     DEF_\1_ABS    FlushCachesSys,10    ; flush caches using CacheClearU()
  236.     DEF_\1_ABS    Enhance,11        ; restores everything (caches, display)
  237.     DEF_\1_ABS    Degrade,12        ; degrades everything
  238.     DEF_\1_ABS    DegradeCpu,13        ; degrades only CPU related stuff
  239.     DEF_\1_ABS    DegradeGfx,14        ; degrades only GFX related stuff
  240.     DEF_\1_ABS    TransfRoutines,15    ; *** obsolete ***
  241.     DEF_\1_ABS    SaveOSData,16        ; saves OS data (mem,CIAs,custom...)
  242.     DEF_\1_ABS    TestFile,17        ; check if a file is here (game path)
  243.     DEF_\1_ABS    Display,18        ; display a string pointed by A1
  244.     DEF_\1_ABS    LoadRNCFile,19        ; load a RNC file and unpack it
  245.     DEF_\1_ABS    AllocExtMem,20        ; allocate extension memory
  246.     DEF_\1_ABS    Test1MBChip,21        ; check against 1MB of chip (at least)
  247.     DEF_\1_ABS    Test2MBChip,22        ; check against 2MB of chip
  248.     DEF_\1_ABS    Reboot,23        ; reboots :-), only works when OS is alive!
  249.     DEF_\1_ABS    WaitReturn,24        ; waits for the user to press return key
  250.     DEF_\1_ABS    BlockFastMem,25        ; * allocates all fastmem. Do not use :-)
  251.     DEF_\1_ABS    CheckFastMem,26        ; checks if the computer has got fast memory
  252.     DEF_\1_ABS    SupervisorMode,27    ; goes into supervisor mode
  253.     DEF_\1_ABS    UserMode,28        ; goes into user mode
  254.     DEF_\1_ABS    Alloc24BitMem,29    ; allocate extension memory, 24 bit area only
  255.     DEF_\1_ABS    OpenFakeExec,30        ; allocate table for fake exec
  256.     DEF_\1_ABS    SetFilesPath,31        ; change default file path
  257.     DEF_\1_ABS    TestDirectory,32    ; test directory presence (game path)
  258.     DEF_\1_ABS    TestDirectoryAbs,33    ; test directory presence (absolute path)
  259.     DEF_\1_ABS    TestFileAbs,34        ; test file presence (absolute path)
  260.     DEF_\1_ABS    SetLocalVarZone,35    ; save start-end of local object variables
  261.     DEF_\1_ABS    InitLogPatch,36        ; initialize patch logging (private function)
  262.     DEF_\1_ABS    TestAssign,37        ; test assign presence
  263.     DEF_\1_ABS    AllocateTheMemory,38    ; AllocMem with ressource-tracking
  264.     DEF_\1_ABS    FreeTheMemory,39    ; AllocMem with ressource-tracking
  265.     DEF_\1_ABS    HexToString,40        ; HexToString, absolute call
  266.     DEF_\1_ABS    UseHarryOSEmu,41    ; Tell JST to use Harry's great OS emu
  267.     DEF_\1_ABS    NewLine,42        ; Prints a newline
  268.     DEF_\1_ABS    DisableChipmemGap,43    ; Will allow LOWMEM with 2MB chip
  269.     DEF_\1_ABS    GetFileLength,44    ; Returns the length of a file on disk
  270.     DEF_\1_ABS    CloseAllWithError,45    ; internal - do not use
  271.     DEF_\1_ABS    LogChipMirror,46    ; internal - do not use
  272.     DEF_\1_ABS    LogCustomMirror,47    ; internal - do not use
  273.     DEF_\1_ABS    LogExtMemory,48        ; internal - do not use
  274.     DEF_\1_ABS    LogRegisters,49        ; internal - do not use
  275.     DEF_\1_ABS    DisableMMU,50        ; internal - do not use
  276.     DEF_\1_ABS    SetClockLoad,51        ; internal - do not use
  277.     DEF_\1_ABS    Unsupported2,52        ; future use
  278.     DEF_\1_ABS    Unsupported3,53        ; future use
  279.     DEF_\1_ABS    Unsupported4,54        ; future use
  280.     DEF_\1_ABS    Unsupported5,55        ; future use
  281.     DEF_\1_ABS    Unsupported6,56        ; future use
  282.     DEF_\1_ABS    Unsupported7,57        ; future use
  283.     DEF_\1_ABS    Unsupported8,58        ; future use
  284.  
  285.     ENDM
  286.     
  287.     ; *** Relocated routines. always call with JSRGEN (see macros.i)
  288.     ; *** from user program. It works with JSR but if the OS is killed
  289.     ; *** JSRGEN is safer as it jumps in the allocated block
  290.     ; *** which is in the top of memory (MEMF_REVERSE) if kick > 38
  291.     ; *** fast memory is used when found, else chipmem is used
  292.     ; ***
  293.     ; *** I also included a short description of the routines
  294.     ; *** Please read the autodocs to get more details
  295.     
  296.     ; *** The functions marked with a * should not be used anymore
  297.  
  298. MAKE_REL_REFS:MACRO
  299.     DEF_\1_REL    GetSR,0            ; returns SR in D0
  300.     DEF_\1_REL    GoECS,1            ; resets sprite aspect/playfield/goes 15KHz (dummy)
  301.     DEF_\1_REL    GetAttnFlags,2        ; gets system backuped AttnFlags, at any time
  302.     DEF_\1_REL    ResetDisplay,3        ; switches in PAL or NTSC if specified
  303.     DEF_\1_REL    ResetSprites,4        ; resets sprite aspect, useless, dummy!
  304.     DEF_\1_REL    BlackScreen,5        ; sets all color registers to black
  305.     DEF_\1_REL    JoypadState,6        ; to check the state of joystick/joypad
  306.     DEF_\1_REL    InitTrackDisk,7        ; returns a fake disk IO pointer in A1
  307.     DEF_\1_REL    TrackLoad,8        ; simulates DoIO()
  308.     DEF_\1_REL    TrackLoadFast,9        ; *